package com.chen.manager.helper;

/**
 * @author cgj
 * @date 2/22/25 5:00 PM
 */

import com.chen.model.entity.system.SysMenu;

import java.util.ArrayList;
import java.util.List;

/**
 * 产生层次的树形结构
 */
public class SysMenuHelper {
    public static List<SysMenu> generateTree(List<SysMenu> sysMenuList) {
        ArrayList<SysMenu> sysMenuTree = new ArrayList<>();  //存放一级菜单
        for (SysMenu sysMenu : sysMenuList) {
            if(sysMenu.getParentId().intValue()==0){
                //根据一级菜单, 去查找他的子菜单
                List<SysMenu>  subNode=searchSubNode(sysMenu,sysMenuList); //返回的是子节点的集合
                sysMenu.setChildren(subNode);
                sysMenuTree.add(sysMenu); //存放一级菜单

            }
        }
//        ArrayList<SysMenu> childrenList = new ArrayList<>();
//        //判断是不是父节点
//        for (SysMenu sysMenu : sysMenuList) {
//            if(sysMenu.getParentId().intValue()==0){
//                for (SysMenu menu : sysMenuList) {
//                    if(sysMenu.getId().intValue()==menu.getParentId().intValue()){
//                        // 自己的id和父节点的id匹配, 追加到父=节点的集合中
//                        childrenList.add(menu);
//                    }
//                }
//                //子节点追加到父节点中
//                sysMenu.setChildren(childrenList);
//                // 清空子节点集合, 方便下一次便利时使用
//                childrenList.clear();
//            }
//            sysMenuTree.add(sysMenu);
//        }

        return sysMenuTree;
    }

    private static List<SysMenu> searchSubNode(SysMenu sysMenu, List<SysMenu> sysMenuList) {
        ArrayList<SysMenu> childrenList = new ArrayList<>();
        for (SysMenu menu : sysMenuList) {
            if(menu.getParentId().intValue()==sysMenu.getId()){
                //查找到子节点
                childrenList.add(menu); //把子节点添加到父节点

            }
        }
        return childrenList;
    }
}
